-
Notifications
You must be signed in to change notification settings - Fork 2
Create StartMenu.py #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
So, ich habe jetzt einfach mal angefangen. Unter Python 3.4.3 und Pygame 1.9.2b1 sollte der Python Code ausführbar sein. Es öffnet sich ein Fenster mit einer Menustruktur. Unter Optionen können die FPS und die Fenstergröße angepasst werden. Durch "Start" lässt sich ein kleines "Spiel" starten. Ein Viereck das man nach links und rechts bewegen kann. Mittels ESC springt man zu dem Menu zurück. Ich habe keine Ahnung ob die Struktur überhaupt so passt. Da muss sicherlich viel geändert werden. Und sicherlich sind es auch viel zu wenige Kommentare. Aber bevor ich da jetzt weiter schreibe, wollte ich erst mal wissen, ob der Weg der Richtige ist. Ich bin mir auch unsicher, ob ein PullRequest jetzt das richtige ist, oder ich den Code lieber als Thread hätte erstellen sollen?!
StartMenu.py
Outdated
| import os | ||
|
|
||
|
|
||
| class ConfigHandler(object): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Handler im Namen ist ein “smell“. Das ist so ein völlig nichtssagender Namenszusatz. Eine Klasse die nur aus statischen Methoden und globalem Zustand besteht ist IMHO ein Fehler.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich habe mir überlegt, dass wir später vielleicht mehrere Files(Konfigurationen) einlesen
und es sich anbietet, dass sich eine Klasse darum kümmert.
Aber ich wusste nicht, außer mit statischen Methoden, wie ich auf die eingelesenen Dateien zugreifen kann.
Sollte ich das Objekt einfach initialisieren und die Instanz jeder Klasse die sie braucht übergeben?
Vererbung macht für diesen Fall ja keinen Sinn. Dann sind es ja wieder getrennte Datensätze.
Dachte Handler steht für handhaben. Wäre ConfigManager passender?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das ganze Ding ist IMHO viel zu kompliziert. Es ist doch gar nicht klar ob man diese Komplexität später auch tatsächlich braucht. Stichworte KISS und YAGNI. :-)
Eine Klasse die nur statische ”Methoden” enthält ist keine Klasse sondern nur ein Namensraum für Funktionen. Dafür sind in Python Module vorgesehen. Das das Ding so statisch ist, macht zum Beispiel Unit-Tests schwierig bis unmöglich.
Irgendwas handhaben/behandeln oder verwalten (Manager) tut letztendlich so ziemlich jede Klasse, darum kann man den Namenszusatz Handler oder Manager eigentlich auch an jeden Klassennamen dran pappen. Damit ist dieser Zusatz aber sinnlos weil der keine wirkliche Information enthält. Configurations wäre ausreichend.
Wenn das verschachtelt sein soll, würde ich einfach JSON als Konfigurationsformat verwenden. Der Code das zu unterstützen ist viel einfacher und man kann beliebig tief hierarchisch Informationen speichern. Falls Kommentare in der Konfigurationsdatei gewünscht sind, könnte man überlegen statt dessen YAML zu verwenden.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
KISS und YAGNI leuchten mir ein.
Aber wie wird das gelöst, wenn 2-3 unabhänige Klassen auf die selben Daten zugreifen müssen? Das geht doch nur mittels einer Klasse wegen einer gemeinsamen Datenhaltung.
Oder sollte jede Klasse für sich die Daten immer wieder neueinlesen?
Ich habe jetzt einfach eine Instanz erzeugt und jeder Klasse die sie braucht übergeben.
Mit JSON wäre es einfacher zu lösen. Die Datei sehe dann aber nicht mehr so wartbar und freundlich aus. Ich wollte, dass das Menu durch die Datei editiertbar ist. Aber das ist sicherlicher zu weit gedacht.
|
So ganz generell würde ich gar nicht erst anfangen wollen einzelne Module anzulegen die nicht durch ein Package zusammengefasst werden. |
|
Ich habe jetzt einige Dinge ausgebessert. Aber noch nicht alle. |
|
Mach einen neuen, oder arbeite an dem sebastian2443-patch-1-Branch weiter. |
So, ich habe jetzt einfach mal angefangen.
Unter Python 3.4.3 und Pygame 1.9.2b1 sollte der Python Code ausführbar sein.
Es öffnet sich ein Fenster mit einer Menustruktur.
Unter Optionen können die FPS und die Fenstergröße angepasst werden.
Durch "Start" lässt sich ein kleines "Spiel" starten.
Ein Viereck das man nach links und rechts bewegen kann.
Mittels ESC springt man zu dem Menu zurück.
Ich habe keine Ahnung ob die Struktur überhaupt so passt.
Da muss sicherlich viel geändert werden.
Und sicherlich sind es auch viel zu wenige Kommentare.
Aber bevor ich da jetzt weiter schreibe, wollte ich erst mal wissen,
ob der Weg der Richtige ist.
Ich bin mir auch unsicher, ob ein PullRequest jetzt das richtige ist, oder ich den Code lieber als Thread hätte erstellen sollen?!